/**
 *  459. 重复的子字符串
 * 给定一个非空的字符串 s ，检查是否可以通过由它的一个子串重复多次构成。
 *
 * 示例 1:
 * 输入: s = "abab"
 * 输出: true
 * 解释: 可由子串 "ab" 重复两次构成。
 *
 * 示例 2:
 * 输入: s = "aba"
 * 输出: false
 *
 * 示例 3:
 * 输入: s = "abcabcabcabc"
 * 输出: true
 * 解释: 可由子串 "abc" 重复四次构成。 (或子串 "abcabc" 重复两次构成。)
 *
 *
 * 提示：
 * 1 <= s.length <= 104
 * s 由小写英文字母组成
 */
pub fn repeated_substring_pattern(s: String) -> bool {
    let s_len = s.len();
    for i in 1..s_len {
        let temp = &s[..i];
        let temp_len = temp.len();
        if s_len % temp_len != 0 {
            continue;
        }
        let ll = s_len / temp_len;
        let hh = temp.repeat(ll);
        if hh.eq(&s) {
            return true;
        }
    }
    false
}

#[cfg(test)]
mod test {
    use super::repeated_substring_pattern;

    #[test]
    fn test() {
        let s = "abab".to_string();
        let re = repeated_substring_pattern(s);
        assert_eq!(true, re);
    }
}
